Fix regression for symlinks in bare-user repos
authorAlexander Larsson <alexl@redhat.com>
Fri, 21 Oct 2016 09:16:42 +0000 (11:16 +0200)
committerAtomic Bot <atomic-devel@projectatomic.io>
Fri, 21 Oct 2016 09:24:27 +0000 (09:24 +0000)
Commit 1d4f1b8878addd28059c3a3928640491755cd615 started using hardlinks
checkouts of symlinks. However, symlinks are not stored as symlink in the
repo for bare-user repos, so this breaks user-mode checkouts of such repos.

We fix this by checking for !is_symlink in the bare-user case.

This fixes:
     https://github.com/ostreedev/ostree/issues/537

Closes: #538
Approved by: giuseppe

src/libostree/ostree-repo-checkout.c

index 298fcd15ddca1bfa634c531c4605912f7b87755b..9b640648289f4fe18a9fdc6ebf69727665b50431 100644 (file)
@@ -450,7 +450,9 @@ checkout_one_file_at (OstreeRepo                        *repo,
           gboolean is_bare = ((current_repo->mode == OSTREE_REPO_MODE_BARE
                                && options->mode == OSTREE_REPO_CHECKOUT_MODE_NONE) ||
                               (current_repo->mode == OSTREE_REPO_MODE_BARE_USER
-                               && options->mode == OSTREE_REPO_CHECKOUT_MODE_USER));
+                               && options->mode == OSTREE_REPO_CHECKOUT_MODE_USER
+                               /* NOTE: bare-user symlinks are not stored as symlinks */
+                               && !is_symlink));
           gboolean current_can_cache = (options->enable_uncompressed_cache
                                         && current_repo->enable_uncompressed_cache);
           gboolean is_archive_z2_with_cache = (current_repo->mode == OSTREE_REPO_MODE_ARCHIVE_Z2